﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SISREBBVA.BE;
using SISREBBVA.BL;
using System.Data;
using Telerik.Web.UI;
using System.Xml;

namespace SISREBBVA
{
    public partial class perfil : System.Web.UI.Page
    {
        UsuarioBL _usuario = new UsuarioBL();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!Page.IsPostBack)
                InitialLoad();
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            Page.Validate("Perfil");
            if (Page.IsValid) {

                Usuario currentUsuario = BBVA.GetInstance().CurrentUsuario;           
                

                XmlDocument doc = new XmlDocument();

                XmlElement rootElement = doc.CreateElement("UsuarioBBVA");
                doc.AppendChild(rootElement);

                
                String nombres = txtNombres.Text;
                String apellidos = txtApellidos.Text.Trim();
                DateTime fechanacimiento = txtFechaNacimiento.SelectedDate.Value;
                String sexo = ddlSexo.SelectedItem.Value;
                String direccion = txtDireccion.Text.Trim();
                String codigopostar = txtCodPostal.Text.Trim();
                String email = txtCorreo.Text.Trim();
                float sueldo = float.Parse(txtSueldo.Text.Trim());

                //element Usuario
                XmlElement usuario = doc.CreateElement("Usuario");

                XmlAttribute atrIdUsuarioPedido = doc.CreateAttribute("n_usuario_id");
                atrIdUsuarioPedido.Value = currentUsuario.id + "";
                usuario.SetAttributeNode(atrIdUsuarioPedido);

                XmlAttribute atrNombres = doc.CreateAttribute("s_usu_nombres");
                atrNombres.Value = (nombres);
                usuario.SetAttributeNode(atrNombres);

                XmlAttribute atrApellidos = doc.CreateAttribute("s_usu_apellidos");
                atrApellidos.Value = (apellidos);
                usuario.SetAttributeNode(atrApellidos);

                XmlAttribute atrFechaNacimiento = doc.CreateAttribute("d_usu_fechanacimiento");
                atrFechaNacimiento.Value = (fechanacimiento.ToString("s"));
                usuario.SetAttributeNode(atrFechaNacimiento);

                XmlAttribute atrSexo = doc.CreateAttribute("s_usu_sexo");
                atrSexo.Value = (sexo);
                usuario.SetAttributeNode(atrSexo);

                XmlAttribute atrDireccion = doc.CreateAttribute("s_usu_direccion");
                atrDireccion.Value = (direccion + "");
                usuario.SetAttributeNode(atrDireccion);

                XmlAttribute atrCodigoPostal = doc.CreateAttribute("s_usu_codpostal");
                atrCodigoPostal.Value = (codigopostar);
                usuario.SetAttributeNode(atrCodigoPostal);

                XmlAttribute atrCorreo = doc.CreateAttribute("s_usu_correo");
                atrCorreo.Value = (email);
                usuario.SetAttributeNode(atrCorreo);

                XmlAttribute atrSueldo = doc.CreateAttribute("n_usu_sueldo");
                atrSueldo.Value = (sueldo + "");
                usuario.SetAttributeNode(atrSueldo);

                rootElement.AppendChild(usuario);

                XmlElement rootCategorias = doc.CreateElement("Categorias");
                rootElement.AppendChild(rootCategorias);

                //lista de categorias

                XmlElement categoria;
                 for(int i=0;i<cblCategorias.Items.Count; i++)
                {
                    categoria = doc.CreateElement("Categoria");

                    string code = cblCategorias.Items[i].Value;
                    bool estado = cblCategorias.Items[i].Selected;              
                    
                    

                    XmlAttribute atrCodeCategoria = doc.CreateAttribute("s_categoria_code");
                    atrCodeCategoria.Value = (code);
                    categoria.SetAttributeNode(atrCodeCategoria);

                    XmlAttribute atrEstadoCategoria = doc.CreateAttribute("b_cat_estado");
                    atrEstadoCategoria.Value = (estado+"");
                    categoria.SetAttributeNode(atrEstadoCategoria);

                    rootCategorias.AppendChild(categoria);
                    

                }
                
               
                int resultado = _usuario.ActualizarUsuarioXML(doc.InnerXml, currentUsuario.id);

                currentUsuario = _usuario.VerificarAcceso(BBVA.GetInstance().CurrentUsuario.correo, currentUsuario.password);

                BBVA.GetInstance().CurrentUsuario = currentUsuario;
                BBVA.GetInstance().getZipCodesCercanosByUsuario(currentUsuario);
                BBVA.GetInstance().getDatosConsumoByZicodeUsuario(currentUsuario);
                
                Response.Redirect("inicio.aspx");
            
            }
        }

        private void InitialLoad() 
        { 
            Usuario usuario = BBVA.GetInstance().CurrentUsuario;

            txtNombres.Text = usuario.nombres;
            txtApellidos.Text = usuario.apellidos;
            txtDireccion.Text = usuario.direccion;
            txtCorreo.Text = usuario.correo;
            txtCodPostal.Text = usuario.codigoPostal;
            ddlSexo.SelectedValue = usuario.sexo;
            txtFechaNacimiento.SelectedDate = usuario.fechanacimiento;
            txtSueldo.Text = usuario.sueldo+"";

            cblCategorias.DataTextField = "descripcion";
            cblCategorias.DataValueField = "code";
            cblCategorias.DataSource = BBVA.GetInstance().ListaCatgorias;
            cblCategorias.DataBind();

            for(int i=0;i<cblCategorias.Items.Count; i++)
                foreach(Categoria item in usuario.listaCategorias )
                {
                    if (cblCategorias.Items[i].Value == item.code)
                        cblCategorias.Items[i].Selected = true;
                }
        }
    }
}